#include "seqstack.h"

/*******************************************************************************
*函数名：
*函数功能：创建空的顺序栈
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void creat_seqstack(pstack* S)
{
	*S = (pstack)malloc(sizeof(STACK));
	if(*S == NULL)
	{
		perror("malloc");
		return;
	}
	
	(*S)->top = -1;
}

/*******************************************************************************
*函数名：
*函数功能：入栈
*函数参数：
*函数返回值：
*函数说明：按满增栈处理
*******************************************************************************/
void push(pstack p,int data)
{
	/*判断栈是否满*/
	if (isfull_seqstack(p))
	{
		printf("栈满，无法插入\n");
		return;
	}
	
	/*入栈*/
	p->top++;
	p->data[p->top] = data;
}

/*******************************************************************************
*函数名：
*函数功能：出栈
*函数参数：
*函数返回值：
*函数说明：若栈空，则提示用户；否则将出栈的数据存入地址pdata中
*******************************************************************************/
void pop(pstack p,int* pdata)
{
	/*判断栈是否为空*/
	if (isempty_seqstack(p))
	{
		printf("栈空，无法删除\n");
		return;
	}
	
	/*出栈*/
	*pdata = p->data[p->top];
	p->top--;
}

/*******************************************************************************
*函数名：
*函数功能：判断栈是否满
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
bool isfull_seqstack(pstack p)
{
	if(p->top == size-1)
		return true;
	else
		return false;
}

/*******************************************************************************
*函数名：
*函数功能：判断栈是否空
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
bool isempty_seqstack(pstack p)
{
	if (p->top == -1)
		return true;
	else
		return false;
}


/*******************************************************************************
*函数名：
*函数功能：打印顺序栈
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
void print_seqstack(pstack p)
{
	int i;
	printf("--------------------------------------------\n");
	printf("栈顶");
	
	for(i = p->top;i >= 0;i--)
		printf("-%d",p->data[i]);
	
	printf("-栈底\n");
	printf("--------------------------------------------\n");
}

/*******************************************************************************
*函数名：
*函数功能：
*函数参数：
*函数返回值：
*函数说明：
*******************************************************************************/
